package com.autumn.mybatis.provider;

import com.autumn.mybatis.metadata.EntityTable;

/**
 * 定义生成器
 * 
 * @author 老码农
 *         <p>
 *         Description
 *         </p>
 * @date 2018-01-20 11:53:02
 */
public interface IDefinitionBuilder extends IBuilder {

	/**
	 * 获取安全的名称
	 * 
	 * @param name
	 *            名称
	 * @return
	 */
	String getSafeName(String name);

	/**
	 * 创建注释
	 * 
	 * @param text
	 *            字符
	 * @return
	 */
	String createAnnotation(String text);

	/**
	 * 创建表脚本集合
	 * 
	 * @param entityPackages
	 *            实体包集合
	 * @return
	 */
	String createTableScripts(String... entityPackages);

	/**
	 * 创建表脚本
	 * 
	 * @param table
	 *            表
	 * @return
	 */
	String createTableScript(EntityTable table);

	/**
	 * 创建表脚本
	 * 
	 * @param table
	 *            表
	 * @param tableName
	 *            表名称
	 * @return
	 */
	String createTableScript(EntityTable table, String tableName);

}
